// 给定红包总金额和红包个数，
// 每个红包金额随机分配，但要保证所有红包金额之和等于总金额，
// 并且每个红包金额大于 0


function splitRedEnvelope(totalAmount, num) {
  const result = [];
  let remainingAmount = totalAmount * 100; // 转换为分，避免小数计算误差
  let remainingNum = num;

  for (let i = 0; i < num - 1; i++) {
    // 为保证后续每个红包至少有 1 分，当前红包最大可分配金额为剩余金额减去剩余红包数
    const max = remainingAmount - remainingNum + 1;
    // 随机生成 1 到 max 之间的金额
    const randomAmount = Math.floor(Math.random() * max) + 1;
    result.push(randomAmount / 100); // 转换回元
    remainingAmount -= randomAmount;
    remainingNum--;
  }
  // 最后一个红包直接分配剩余金额
  result.push(remainingAmount / 100);

  return result;
}

// 示例使用
const total = 100; // 总金额 100 元
const count = 10; // 红包个数 10 个
const redEnvelopes = splitRedEnvelope(total, count);
console.log(redEnvelopes);
